草庐IT

LeetCode - 两数之和

全部标签

每天一道leetcode:1466. 重新规划路线(图论&中等&广度优先遍历)

今日份题目:n座城市,从0到n-1编号,其间共有n-1条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。路线用connections表示,其中connections[i]=[a,b]表示从城市a到b的一条有向路线。今年,城市0将会举办一场大型比赛,很多游客都想前往城市0。请你帮助重新规划路线方向,使每个城市都可以访问城市0。返回需要变更方向的最小路线数。题目数据保证每个城市在重新规划路线方向后都能到达城市0。示例1输入:n=6,connections=[[0,1],[1,3],[2,3],[4,0],[

【LeetCode】240.搜索二维矩阵Ⅱ

题目编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例1:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],target=5输出:true示例2:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],target=20输出:fals

LeetCode952三部曲之二:小幅度优化(137ms -> 122ms,超39% -> 超51%)

欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览本文是《LeetCode952三部曲》系列之二,在前文中,咱们详细分析了解题思路,然后按照思路写出了代码,在LeetCode提交成功,成绩如下图所示,137ms,超过39%不得不说这个成绩很不理想,于是今天咱们来尝试进行优化,以减低时间,提升百分比优化点预判回顾一下题目要求,如下所示上图中有个重要条件:入参数组中,最大值不超过100000回顾咱们在初始化并查集数据结构的时候,需要满足数组下标代表数字身份这个特性,例如fathers[100000]

Leetcode: 1. 两数之和 【题解超详细】

前言有人夜里挑灯看花,有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。希望下面的题解可以帮助你们开始 你们的leetcode刷题的天降之路 题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。难度:简单题目链接:1.两数之和示例1:输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示例2:输

《LeetCode零基础指南》(第一讲) 函数

文章目录零、了解网站1、输入输出2、刷题步骤3、尝试编码4、调试提交一、概念定义1、函数简介2、函数的基本概念3、函数的基本结构4、返回类型5、函数名6、参数列表7、函数体8、返回值二、题目分析1、整数乘法2、整数除法3、次幂函数4、开方函数5、最值函数三、推荐学习四、课后习题零、了解网站1、输入输出  对于算法而言,就是给定一些输入,得到一些输出,在一般的在线评测系统中,我们需要自己手写输入输出函数(例如C语言中的scanf和printf),而在LeetCode这个平台,只需要实现它提供的函数即可。函数的传入参数就代表了的算法的输入,而函数的返回值则代表了的算法的输出。2、刷题步骤  找到一

(搜索) 剑指 Offer 13. 机器人的运动范围 ——【Leetcode每日一题】

❓剑指Offer13.机器人的运动范围难度:中等地上有一个m行n列的方格,从坐标[0,0]到坐标[m-1,n-1]。一个机器人从坐标[0,0]的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格[35,37],因为3+5+3+7=18。但它不能进入方格[35,38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例1:输入:m=2,n=3,k=1输出:3示例2:输入:m=3,n=1,k=0输出:1提示:10💡思路:广度优先搜索我们将行坐标和列坐标数位之和大于k的格子看作障碍物

leetcode 567. 字符串的排列(滑动窗口-java)

滑动窗口字符串的排列滑动窗口代码演示进阶优化版上期经典字符串的排列难度-中等leetcode567.字符串的排列给你两个字符串s1和s2,写一个函数来判断s2是否包含s1的排列。如果是,返回true;否则,返回false。换句话说,s1的排列之一是s2的子串。示例1:输入:s1=“ab”s2=“eidbaooo”输出:true解释:s2包含s1的排列之一(“ba”).示例2:输入:s1=“ab”s2=“eidboaoo”输出:false提示:1s1和s2仅包含小写字母滑动窗口这种题目,是明显的滑动窗口算法,相当给你一个S和一个T,请问你S中是否存在一个子串,包含T中所有字符且不包含其他字符。题

Leetcode刷题笔记——二分法

二分法是搜索算法中极其典型的方法,其要求输入序列有序并可随机访问。算法思想为输入:有序数组nums,目的数值target要求输出:如果target存在在数组中,则输出其index,否则输出-1将原数组通过[left,right]两个索引划分范围,初值left=0,right=数组的最后一个元素当leftmiddle=(left+right)/2判断nums[middle]是不是要查找的target,如果是则返回结果判断nums[middle]>target,证明要查找的target在左边,因此right=middle-1判断nums[middle]没有查找到return-1。形如下图:传统的二

LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)

欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos题目描述难度:困难编程语言:Java给定一个由不同正整数的组成的非空数组nums,考虑下面的图:有nums.length个节点,按从nums[0]到nums[nums.length-1]标记;只有当nums[i]和nums[j]共用一个大于1的公因数时,nums[i]和nums[j]之间才有一条边。返回图中最大连通组件的大小示例1:输入:nums=[4,6,15,35]输出:4示例2:输入:nums=[20,50,9,63]输出:2示例3:输入:nums

算法leetcode|75. 颜色分类(rust重拳出击)

文章目录75.颜色分类:样例1:样例2:提示:分析:题解:rust:go:c++:python:java:75.颜色分类:给定一个包含红色、白色和蓝色、共n个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数0、1和2分别表示红色、白色和蓝色。必须在不使用库内置的sort函数的情况下解决这个问题。样例1:输入: nums=[2,0,2,1,1,0] 输出: [0,0,1,1,2,2]样例2:输入: nums=[2,0,1] 输出: [0,1,2]提示:n==nums.length1nums[i]为0、1或2分析:面对这道算法题目